1) Исследование про загрузку треков librosa

Тестирование скорости подгрузки треков:

Ресемплинг для уменьшения размера эрреев

Судя по спектрограммам, ресемплинг трека сильно влияет на качество и извлечение фич, поэтому не будем так делать, если памяти будет хватать.

2) Процессинг файлов, извлечение фич

3) Подготавливаем фичи для дальнейшего анализа

4) Кластеризация

Мультиноминальная регрессия

Kmeans

5) Классификация по основному жанру

RandomForest на разных наборах данных

KNeighborsClassifier

6) Multi-label classification

1. Предобработка данных, EDA и разбиение на тренировочную и тестовую выборки

2. Оценка эффективности разных подходов к multi-label классификации

Есть несколько разных подходов к multi-label классификации, а именно:

  1. Binary Relevance
  2. Classifier Chain
  3. Label Powerset
  4. Multi-Label K Nearest Neighbors (MLkNN)

В рамках каждого подхода, кроме последнего, можно использовать разные классификаторы. Поэтому для первых трех подходов я использовал два варианта классификаторов: Gaussian Naive Bayes и Random Forest. Сравнивал их на основе accuracy (первичная оценка), а также строил multi-label confusion matrix для каждого подхода и оценивал Micro-averaged Precision, Recall и F1-Score.

2.1. Binary Relevance

2.2. Classifier Chains

2.3. Label Powerset

2.4. MLkNN

Итог

Лучше всего себя показал алгоритм Label Powerset с Random Forest внутри. визуализировал для него confusion matrix (она выглядит как набор confusion matrices для каждого класса, поэтому не стал визуализировать или выводить ее на печать для других алгоритмов).

3. Визуализация и тестирование наилучшего алгоритма

4. Реализация исходного ТЗ от Саши Ильина: при подаче трека на вход выдать список возможных поджанров

5. Выводы

  1. Accuracy невысокая, но лучше добиться на таких данных без применения нейросеток сложно.
  2. Хорошо представленные жанры определяются лучше всего, что логично.
  3. Garbage in - garbage out (c)